package chwgigs;

public class J24_Inheritance {

// <클래스 확장하기>


// OOP에서 상속은 매우 중요한 기능임
// 상속을 이용해서 기존코드를 확장시켜 새로운 클래스를 만드는 경우 
// 원래 클래스를 부모, 기본 base클래스라 하고
// 새로운 클래스를 자식, 하위클래스라 한다.
// 

//	<기본 클래스를 확장하는 행위는 크게 2가지 >

// 기본 클래스에 없는 새로운 멤버,메서드를 추가하거나 기본 클래스에 
// 이미 있는 매서드를 무시하고 새롭게 메서드를 재작성함 

// *클래스 확장시 extends 라는 예약어를 사용한다. 

// 한편 기본 클래스를 확장하여 새로운 클래스를 확장하는 경우 
// 형성되는 특수한 관계는 is-a 이다.
// 예를 들어 Animal 이라는 클래스는 fish, tiger, bug 등의 부모 클래스이다.
// Fish is Animal , Tiger is Animal,  Bug is Animal
	
	
// <메서드 재정의 override>
// 클래스 확장시, 
//부모 클래스의 매서드 동작을 자식 클래스에서 변경 할 수 있음

// 단, final 로 선언된 메서드는 재정의 불가하다.  	
	public static void main(String[] args) {
		J24_ParentClass pc=new J24_ParentClass();
		pc.showMeTheMoney();
		
		J24_ChildClass cc=new J24_ChildClass();
		cc.showMeTheMoney();
    
	    J25_fish f=new J25_fish();
	
	    f.eat();
		
	}

}//
